package java3_BasicSyntax.Keywords;

/*
 *基本数据类型与包装类型的区别
 * 1.基本数据类型
 *   存储在栈中
 *   占用固定大小的空间
 *   都有默认值：
 *           byte、short、int、long：0
 *           float、double：0.0
 *           char：'\u0000'即空字符
 *           boolean：false
 *   性能较高，不需要额外的开销
 *   直接进行算数运算和逻辑运算
 * 2.包装类型
 *   存储在堆中
 *   占用内存空间更大，因为他们都是对象
 *   默认值都是null
 *   性能较低，需要额外的开销
 *   可以调用对象的方法
 *   可以自动装箱、自动拆箱
 *
 * 数据相互之间转换时要注意数据大小是否溢出
 */
public class BasicDataDemo {
    static byte b;
    static short s;
    static int i;
    static long l;
    static float f;
    static double d;
    static boolean bo;
    static char c;

    static Byte b1;
    static Short s1;
    static Integer i1;
    static Long l1;
    static Float f1;
    static Double d1;
    static Boolean bo1;
    static Character c1;

    public static void main(String[] args) {
        {
            System.out.println(b);
            System.out.println(b1);
            byte b1 = 127;
            int i = (int) b1 + 20;
            System.out.println("将byte转换为int类型：" + i);
            b1 += 10;
            System.out.println(b1);//数据溢出
        }
        {
            System.out.println(s);
            System.out.println(s1);
        }
        {
            System.out.println(i);
            System.out.println(i1);
        }
        {
            System.out.println(l);
            System.out.println(l1);
            long ll = 123456L;
            System.out.println("long类型注意在数字后加上L或者l:" + ll);
        }
        {
            System.out.println(f);
            System.out.println(f1);
            float ff = 10.2F;
            System.out.println("float类型需要在数字后加上F或f：" + ff);
        }
        {
            System.out.println(d);
            System.out.println(d1);
            double dd = 20.0D;
            System.out.println("double类型要在数字后面加上D或者d：" + dd);
        }
        {
            System.out.println(bo);
            System.out.println(bo1);
            boolean bb = true;
            System.out.println(bb);
        }
        {
            System.out.println(c);
            System.out.println(c1);
            char cc = '1';
            System.out.println(cc);
            char cc1 = 'c';
            System.out.println(cc1);
            char cc2 = '\u2829';
            System.out.println(cc2);
        }
    }
}
